Servlet Listeners এর ধারণা এবং উদাহরণ সহ ব্যবহৃত Listener গুলো

Servlet Filters এবং Listeners - সার্ভলেটস (Servlets) - Java Technologies

287

Servlet Listener হলো এমন ইন্টারফেস বা ক্লাস, যা Servlet API-তে বিশেষ ইভেন্ট বা কার্যকলাপ মনিটর এবং পরিচালনা করতে ব্যবহৃত হয়। Listener সাধারণত একটি অ্যাপ্লিকেশন বা সার্ভলেট কনটেইনারে ইভেন্ট (যেমন HTTP সেশন তৈরি বা ধ্বংস) ঘটলে কার্যকর হয়।


Servlet Listener এর কাজ

  1. ইভেন্ট মনিটর করা:
    • সেশন, অ্যাপ্লিকেশন, বা রিকোয়েস্টের অবস্থা পরিবর্তনের ইভেন্ট।
  2. কাস্টম লজিক সম্পাদন:
    • যেমন ডাটাবেস কানেকশন খোলা বা বন্ধ করা, লগিং করা ইত্যাদি।

সাধারণভাবে ব্যবহৃত Servlet Listeners

  1. ServletContextListener:
    • অ্যাপ্লিকেশন শুরু বা বন্ধের সময় ইভেন্ট পরিচালনা করে।
  2. HttpSessionListener:
    • HTTP সেশন তৈরি বা ধ্বংসের সময় কার্যকর হয়।
  3. ServletRequestListener:
    • HTTP রিকোয়েস্ট তৈরি বা ধ্বংসের সময় কার্যকর হয়।
  4. HttpSessionAttributeListener:
    • সেশনে অ্যাট্রিবিউট যোগ, মুছে ফেলা, বা পরিবর্তন মনিটর করে।
  5. ServletRequestAttributeListener:
    • রিকোয়েস্টে অ্যাট্রিবিউট যোগ, মুছে ফেলা, বা পরিবর্তন মনিটর করে।
  6. ServletContextAttributeListener:
    • ServletContext-এ অ্যাট্রিবিউট যোগ, মুছে ফেলা, বা পরিবর্তন মনিটর করে।

উদাহরণ: Servlet Listeners এর ব্যবহার

Step 1: Maven ডিপেনডেন্সি

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>

Step 2: ServletContextListener উদাহরণ

AppContextListener.java

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class AppContextListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("Application started: " + sce.getServletContext().getContextPath());
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("Application stopped: " + sce.getServletContext().getContextPath());
    }
}

আউটপুট (Console):

Application started: /myapp
Application stopped: /myapp

Step 3: HttpSessionListener উদাহরণ

SessionListener.java

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

@WebListener
public class SessionListener implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println("Session created: " + se.getSession().getId());
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println("Session destroyed: " + se.getSession().getId());
    }
}

আউটপুট (Console):

Session created: A123456789
Session destroyed: A123456789

Step 4: ServletRequestListener উদাহরণ

RequestListener.java

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class RequestListener implements ServletRequestListener {

    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        System.out.println("Request initialized: " + sre.getServletRequest().getRemoteAddr());
    }

    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        System.out.println("Request destroyed: " + sre.getServletRequest().getRemoteAddr());
    }
}

আউটপুট (Console):

Request initialized: 127.0.0.1
Request destroyed: 127.0.0.1

Step 5: HttpSessionAttributeListener উদাহরণ

SessionAttributeListener.java

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

@WebListener
public class SessionAttributeListener implements HttpSessionAttributeListener {

    @Override
    public void attributeAdded(HttpSessionBindingEvent event) {
        System.out.println("Attribute added: " + event.getName() + " = " + event.getValue());
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent event) {
        System.out.println("Attribute removed: " + event.getName());
    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent event) {
        System.out.println("Attribute replaced: " + event.getName());
    }
}

Step 6: ServletRequestAttributeListener উদাহরণ

RequestAttributeListener.java

import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class RequestAttributeListener implements ServletRequestAttributeListener {

    @Override
    public void attributeAdded(ServletRequestAttributeEvent event) {
        System.out.println("Request attribute added: " + event.getName() + " = " + event.getValue());
    }

    @Override
    public void attributeRemoved(ServletRequestAttributeEvent event) {
        System.out.println("Request attribute removed: " + event.getName());
    }

    @Override
    public void attributeReplaced(ServletRequestAttributeEvent event) {
        System.out.println("Request attribute replaced: " + event.getName());
    }
}

Servlet Listeners এর ব্যবহার

  1. Application Initialization:
    • ServletContextListener দিয়ে অ্যাপ্লিকেশন শুরু বা বন্ধ মনিটর করা।
  2. Session Management:
    • HttpSessionListener দিয়ে সেশন তৈরি বা ধ্বংস মনিটর করা।
  3. Request Tracking:
    • ServletRequestListener দিয়ে HTTP রিকোয়েস্টের জীবনচক্র ট্র্যাক করা।
  4. Attribute Monitoring:
    • HttpSessionAttributeListener বা ServletRequestAttributeListener দিয়ে অ্যাট্রিবিউটের পরিবর্তন মনিটর করা।

উপসংহার

Servlet Listeners সার্ভলেট অ্যাপ্লিকেশনের ইভেন্ট পরিচালনার জন্য অপরিহার্য একটি ফিচার। এগুলোর মাধ্যমে অ্যাপ্লিকেশন এবং সেশন কনটেক্সট, রিকোয়েস্ট এবং অ্যাট্রিবিউটের পরিবর্তন পর্যবেক্ষণ ও নিয়ন্ত্রণ করা সহজ হয়।


Content added By
Promotion

Are you sure to start over?

Loading...